Mitigating attacks on server computers by enforcing platform policies on client computers

ABSTRACT

In an embodiment, a computer system is configured to receive, from a client computer, a request with one or more values; determine, based on the one or more values, whether the request is from a platform-specific application compiled for a first computer platform; determine, based on the one or more values, whether the platform-specific application is being executed within an emulator being executed by a second computer platform, wherein the second computer platform is different than the first computer platform.

BENEFIT CLAIM

This application claims the benefit under 35 U.S.C. § 120 as aContinuation of application Ser. No. 16/190,015, filed Nov. 13, 2018,which is a Continuation of application Ser. No. 15/068,468, now U.S.Pat. No. 10,129,289, filed Mar. 11, 2016, the entire contents of whichis hereby incorporated by reference as if fully set forth herein. Theapplicant(s) hereby rescind any disclaimer of claim scope in the parentapplication(s) or the prosecution history thereof and advise the USPTOthat the claims in this application may be broader than any claim in theparent application(s).

FIELD OF THE DISCLOSURE

The present disclosure generally relates to security techniquesapplicable to client/server computer system security, and relates morespecifically to techniques for detecting, at a server computer, whetherrequests from a platform-specific client application are being sent bythe application being executed by a target client-computer platform orby the application being executed by an emulator on a computer platformthat is not the target platform.

BACKGROUND

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

A computer platform is a particular set of hardware components orarchitectures, or software components or architectures. One computerplatform can include one or more different processors, operatingsystems, displays, inputs, or other hardware or software components thatanother computer platform does not have. For example, a particular modelof a mobile device may be a particular computer platform that includesone or more processors and an operating system designed to minimize theamount of power consumed while the mobile device is not actively beingused by a user. A particular desktop model computer platform may includea plurality of high-performance power intensive processors configured toperform computationally expensive simulations.

A platform-specific application is a platform-specific application thatis specifically configured to be executed by a particular computerplatform. A computer platform that a platform-specific application isspecifically configured to be executed by may be referred to as a targetplatform. Platform-specific applications can be developed with one ormore computing programming languages, such as Java, Objective C, andSwift. After a platform-specific application is configured for aparticular computer platform, copies of the platform-specificapplication can be downloaded or shared. A device or computer that hasthe particular computer platform can execute the platform-specificapplication.

A platform-specific application can include platform-specific features.For example, a first mobile device platform may comprise, a firstoperating system (“OS”), GPS, and wireless communication system. Thefirst OS executing on the first mobile device platform may provide oneor more first interfaces for a first platform-specific application toretrieve the current global position of the first mobile device and sendthe position data to a server computer.

A platform-specific application for a particular computer platform neednot be compatible for another computer platform. For example, a secondmobile device platform may comprise, a second OS, GPS, and wirelesscommunication system. The second OS executing on the second mobiledevice platform may provide one or more second interfaces for a secondplatform-specific application to retrieve the current global position ofthe second mobile device and send the position data to the servercomputer. However, if the one or more first interfaces are differentthan the one or more second interfaces, then the first platform-specificapplication is not compatible with the second mobile device platform.

An emulator is software that can execute a platform-specific applicationby emulating the target computer platform even though the emulator maybe executed by a different computer platform. For example, if adeveloper compiles source code to generate a platform-specificapplication for a target mobile device platform, then the developer cantest the platform-specific application on the developer's desktopcomputer platform by executing an emulator on the desktop computerplatform, and instructing the emulator to execute the compiledplatform-specific application while emulating the target mobile deviceplatform.

A server computer that receives data from a platform-specificapplication may be susceptible to similar attacks used against servercomputers that are hosting or serving data in response to one or morerequests. For example, if a server computer receives location data overHyperText Transfer Protocol (“HTTP”) using a particular Uniform ResourceLocator (“URL”) from one or more platform-specific applications, thenthe server computer may receive location data from an attacker sendingfalse or fabricated location data over HTTP using the same particularURL.

Platform-specific applications for particular computer platforms, suchas mobile devices, may not be executable by, or compatible with, othercomputer platforms, such as desktop computer platforms. So, attackersmay resort to “manually” sending bad data to server computers via theplatform-specific application. For example, an attacker may install andexecute a platform-specific application on a target mobile device, inputfalse data into one or more fields, and cause the platform-specificapplication to send a request that includes the bad data to the servercomputer.

Manually sending bad data or other malicious requests to a servercomputer can be time consuming and fail to impact the intended victim ina meaningful way. Furthermore, an attacker may not have access to thetarget computer platform for the platform-specific application that theattacker wants to exploit. Instead, an attacker can execute an emulator,such as ANDROID EMULATOR or THE SIMULATOR for IOS, on the attacker'sdesktop computer platform, and instruct the emulator to execute theplatform-specific application while emulating the target computerplatform. Furthermore, the attacker may use automation tools or scriptsthat simulate a user providing input into the platform-specificapplication, which then causes the platform-specific application beingexecuted in the emulator to repetitively send a large number of requestswith false data to the server computer. The server may determine thatthe requests are valid because the requests are from theplatform-specific application. Accordingly, the server may process themalicious requests with false data.

Attackers may use emulators and automation tools to commit many types ofunauthorized acts, crimes or computer fraud, such as content retrievalor scraping, credential stuffing, ratings manipulation, fake accountcreation, reserving rival goods attacks, ballot stuffing attacks,password snooping, vulnerability assessments, brute force attacks, clickfraud, DDoS attacks, bidding wars, and system fingerprinting attacks.Server administrators and developers may wish to prevent malicious usersfrom attacking a server using a platform-specific application,emulators, and automation tools, while allowing legitimate users to usethe platform-specific application as intended. However, determiningwhich requests are generated by a legitimate user using aplatform-specific application and a malicious user using theplatform-specific application may be difficult.

SUMMARY

The appended claims may serve as a summary of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1 illustrates a process that an emulator filter may perform tofilter requests from a platform-specific application based on whetherthe platform-specific application is executed by a target computerplatform or an emulator on a non-target computer platform, in an exampleembodiment.

FIG. 2 illustrates a computer system for determining whether a requestis from a platform-specific application executed by a target computerplatform or an emulator on a non-target computer platform, in an exampleembodiment.

FIG. 3 illustrates a process to filter a request from aplatform-specific application using a set of rules in a policy, in anexample embodiment.

FIG. 4 illustrates a computer system upon which an embodiment may beimplemented.

While each of the drawing figures illustrates a particular embodimentfor purposes of illustrating a clear example, other embodiments mayomit, add to, reorder, or modify any of the elements shown in thedrawing figures. For purposes of illustrating clear examples, one ormore figures may be described with reference to one or more otherfigures, but using the particular arrangement illustrated in the one ormore other figures is not required in other embodiments. For example,several steps in FIG. 1 and FIG. 3 may reference several componentsillustrated in FIG. 2 and discussed in detail below, but using theparticular arrangement illustrated in FIG. 2 is not required in otherembodiments. Furthermore, while the requests discussed in many exampleembodiments are HyperText Transfer Protocol (“HTTP”) requests, in otherembodiments, requests may be sent or received using other standard orproprietary protocols, such as SPDY.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention. Words, such as “or”, may be inclusive or exclusiveunless expressly stated otherwise; a “set” may comprise zero, one, ormore than one elements. For example, a set of instructions may compriseone or more instructions.

Embodiments are described herein according to the following outline:

-   -   1.0 General Overview    -   2.0 Determining Whether a Request is From a Native Application        Executed by a Target Platform or an Emulator on a Non-Target        Platform        -   2.1 Determining Whether a Request is From a Native            Application        -   2.2 Determining Whether the Native Application is Being            Executed by a Target Computer Platform or an Emulator            -   2.2.1 Conditionally Executed Code            -   2.2.2 Code that Checks for Hard-to-Simulate Components            -   2.2.3 Sending Data to an Emulator Filter    -   3.0 Example Network Topology for Determining Whether a Request        is From a Native Application Executed by the Target Client        Computer Platform or by an Emulator        -   3.1 Client-Computer Platforms        -   3.2 Server Infrastructure        -   3.3 Emulator        -   3.4 Emulator Filter and Intermediary Computer        -   3.5 Storage and Configuration    -   4.0 Process Overview for Enforcing Platform Policies        -   4.1 Receiving one or more Requests from one or more            Platform-Specific Applications        -   4.2 Determining Whether the Request is from a            Platform-Specific Application Executed by an Emulator or a            Target Client-Computer Platform        -   4.3 Determining Whether Remote Interface is Protected        -   4.4 Determining Whether Value(s) are Correctly Signed        -   4.5 Determining one or more Actions Based on a Policy and            Results of one or more Determinations, and Perform the one            or more Actions        -   4.6 Negative Actions        -   4.7 Positive Actions    -   5.0 Implementation Mechanisms—Hardware Overview    -   6.0 Other Aspects of Disclosure

1.0 General Overview

In an embodiment, a computer system is configured to receive, from aclient computer, a request with one or more values; determine, based onthe one or more values, whether the request is from a platform-specificapplication compiled for a first computer platform; determine, based onthe one or more values, whether the platform-specific application isbeing executed within an emulator being executed by a second computerplatform, wherein the second computer platform is different than thefirst computer platform.

In an embodiment, the set of security instructions, when executed by theone or more processors, further causes the one or more processors toperform a negative action in response to determining that the request isfrom the platform-specific application being executed within theemulator being executed by the second computer platform.

In an embodiment, the set of security instructions, when executed by theone or more processors, further causes the one or more processors todetermine, based on the one or more values, whether theplatform-specific application being executed natively by the firstcomputer platform.

In an embodiment, the platform-specific application includes one or morefingerprinting instructions that are conditionally executed if theplatform-specific application is executed within the emulator beingexecuted by the second computer platform; the one or more fingerprintinginstructions, if executed within the emulator being executed by thesecond computer platform, cause the client computer to produce one ormore first fingerprint values and include in the one or more firstfingerprint values in the one or more values in the request; the set ofsecurity instructions, when executed by the one or more processors,cause the one or more processors to determine that the request is fromthe platform-specific application being executed within the emulatorbeing executed by the second computer platform if the one or more valuesinclude the one or more first fingerprint values.

In an embodiment, the one or more fingerprinting instructions areconfigured to generate the one or more fingerprint values using one ormore methods; the one or more fingerprinting instructions are configuredto periodically to produce one or more different fingerprint valuesaccording to one or more different methods.

In an embodiment, the one or more memory devices comprise a policy thatdefines a plurality of rules, wherein each rule in the set of rulescomprises one or more match criteria and one or more actions; the set ofsecurity instructions, when executed by the one or more processors,further cause the one or more processors to: determine that a particularrule, among the set of rules, has one or more particular match criteriathat are satisfied by the request and one or more particular actions,and in response, perform the one or more particular actions.

2.0 Determining Whether a Request is From a Native Application Executedby a Target Platform or an Emulator on a Non-Target Platform

A platform-specific application is an application that is specificallyconfigured to be executed by one or more particular computer platforms.Each of the one or more particular computer platforms may be referred toas a target computer platform. A computer platform that is not a targetcomputer platform for a particular platform-specific application, or anemulator, may be referred to as a non-target computer platform.

An emulator may be software or hardware that emulates or simulateshardware or software components of a target computer platform. However,the emulator may be on, or executed by, a different underlying computerplatform. As discussed in detail further herein, although an emulatoremulates a particular target computer platform, a non-target computerplatform with the emulator is not completely equivalent to theparticular target computer platform. An emulator filter can determinewhether a request is from a platform-specific application being executedby an emulator or a platform-specific application being executed by atarget computer platform by detecting one or more differences between anemulator executing the platform-specific application and a targetplatform executing the platform-specific application.

FIG. 1 illustrates a process that an emulator filter may perform tofilter requests from a platform-specific application based on whetherthe platform-specific application is executed by a target computerplatform or an emulator on a non-target computer platform, in an exampleembodiment. In step 110, an intermediary computer receives, from aclient computer, a request with one or more values. The request mayinclude one or more values that can be used to determine whether aplatform-specific application is being executed natively by the targetcomputer platform or by an emulator on a non-target client-computerplatform. For example, an emulator filter on a server computer mayreceive an HTTP request, from a client computer, that includes an answerto a survey question.

2.1 Determining Whether a Request is From a Native Application

In step 120, the intermediary computer determines whether the request isfrom a platform-specific application. If so, then control may proceed tostep 130; otherwise control may proceed to step 180 and perform anegative action (discussed further herein). An emulator filter maydetermine whether a request is from a platform-specific applicationbased on one or more features in the request. For example, a request mayidentify or include one or more servers, ports, domains, protocols,resources, paths, queries, parameters, credentials, values,platform-specific application identifier or one or more other featuresassociated with platform-specific application. Those associations may bestored in a configuration or storage system (discussed further herein).If a request identifies or includes one or more particular featuresassociated with a platform-specific application, then the emulatorfilter may determine that the request is from a platform-specificapplication or for protected resource and proceed to step 130;otherwise, the emulator filter may determine that the request is notfrom a platform-specific application and proceed to step 180 and performa negative action. In an embodiment, if a request is received from aclient computer, the emulator filter may assume the request is from aplatform-specific application and proceed directly to step 130.

2.2 Determining Whether the Native Application is Being Executed by aTarget Computer Platform or an Emulator

In step 130, the intermediary computer determines whether theplatform-specific application, which sent the request, is being executedby an emulator on a computer platform that is not a target computerplatform for the platform-specific application. A request may includeone or more signals comprising values, characteristics, or other datathat indicate whether the platform-specific application is beingexecuted by an emulator or natively on a target client-computerplatform. In response to determining that the request is from aplatform-specific application executed by an emulator, control mayproceed to step 180 and perform a negative; otherwise, control mayproceed to step 190 and perform a positive action (discussed furtherherein). In an embodiment, in response to determining that the requestis from a platform-specific application executed by a targetclient-computer platform, control may proceed to step 190 and perform apositive action; otherwise, control may proceed to step 180 and performa negative action.

One or more methods may be used for reliably determining if aplatform-specific application is being executed natively or not. Forexample, a platform-specific application may include code (referred toherein as “fingerprinting code”) that when executed determines andgenerates data indicating whether the platform-specific application isbeing executed natively or not. Fingerprinting code may compriseconditionally executed code, code that checks for hard-to-simulatecomponents, or one or more other methods. The platform-specificapplication may include the data generated from the fingerprinting codein one or more requests sent to the emulator filter. The emulator filtermay use the data to determine whether the requests are from aplatform-specific application running by a target client-computerplatform (natively) or an emulator on a non-target client-computerplatform (not natively). One or more values generated fromfingerprinting code may be referred to as one or more “fingerprintingvalues”.

Fingerprinting code may be configured to periodically produce adifferent set of one or more values using a different set of one or moremethods over time. For example, fingerprinting code may comprise codethat when executed during a first period of time generates dataindicating whether the platform-specific application is being executednatively or not using conditionally executed code. The fingerprintingcode may comprise code that when executed during a second period of timegenerates data indicating whether the platform-specific application isbeing executed natively or not by attempting to discover or usehard-to-simulate hardware or software components. The fingerprintingcode may comprise code that when executed periodically downloads a newset of code from a server computer. When executed, the new code may beconfigured to generate new or different set of data indicating whetherthe platform-specific application is being executed natively or not. Thenew or different set of data may be in one or more new or differentformats, variables, objects, or other data or data structure. The newcode may be configured to generate the new or different set of datausing one or more new or different methods.

2.2.1 Conditionally Executed Code

Snippet 1 comprises conditionally executed code, which when compiledfor, or executed by, one or more target client-computer platforms or anemulator can be used to determine whether the platform-specificapplication is being executed natively or not.

Snippet 1:

line 01: #include “PlatformIdentifiers.h” line 02: #if(MOBILE_PHONE_SIMULATOR) line 03:  // Executed by first known emulatorline 04: #elseif (MOBILE_TABLET_EMULATOR) line 05:  // Executed bysecond known emulator line 06: #elseif (TARGET_PHONE || TARGET_TABLET)line 07:  // Executed by target computer platform line 08: #else line09:  // Running unknown emulator line 10: #endif

In line 1, a library is included in the platform-specific application.The library may define one or more identifiers, macros, functions, otherdata or logic that is associated with, or can identify, one or moreparticular computer platforms or emulators. The code in line 2 uses afirst particular function defined in the library in line 1 (“MOBILEPHONE SIMULATOR”). When the first particular function is executed, theplatform-specific application calls an Application Programming Interface(“API”) provided by the target client-computer platform or an emulatorexecuting the platform-specific application. The target client-computerplatform or emulator may return a value. The first particular functionmay determine if the returned value is a particular value associatedwith a particular mobile phone simulator; if so, then control mayproceed to execute the code in line 3, which is not shown. However, thecode in line 3 may generate data indicating that the platform-specificapplication is not being executed natively, or is being executed by aparticular phone simulator. For example, the data may include the nameof the emulator. The data may be included in one or more subsequentrequests that are sent to, and processed by, an emulator filter.Accordingly, the emulator filter may determine that the one or morerequests are from the platform-specific application executed by theparticular phone emulator.

If the first particular function determines that the returned value is aparticular value that is not associated with the particular mobile phoneemulator or simulator (indicating that the platform-specific applicationis being executed by a target client-computer platform or anotheremulator), then control may proceed to execute the code in line 4. Thecode in line 4 uses a second particular function defined in the libraryin line 1 (“MOBILE TABLET EMULATOR”). When the second particularfunction is executed, the platform-specific application calls the APIprovided by the target client-computer platform or an emulator executingthe platform-specific application. The target client-computer platformor emulator may return a value. The second particular function maydetermine if the returned value is a particular value associated with aparticular mobile tablet emulator; if so, then control may proceed toexecute the code in line 5, which is not shown. However, the code inline 5 may generate data indicating that the platform-specificapplication is not being executed natively, or is being executed by aparticular tablet emulator. The data may be included in one or moresubsequent requests that are sent to, and processed by, an emulatorfilter. Accordingly, the emulator filter may determine that the one ormore requests are from the platform-specific application executed by theparticular tablet emulator.

If the second particular function determines that the returned value isa particular value that is not associated with the particular mobiletablet simulator (indicating that the platform-specific application isbeing executed by a target client-computer platform or anotheremulator), then control may proceed to execute the code in line 6. Thecode in line 6 uses a third function defined in the library in line 1(“TARGET_PHONE”). When the third particular function is executed, theplatform-specific application calls the API provided by the targetclient-computer platform or an emulator executing the platform-specificapplication. The target client-computer platform or emulator may returna value. The third particular function may determine if the returnedvalue is a particular value associated with a particular target mobilephone computer platform; if so, then control may proceed to execute thecode in line 7, which is not shown. However, the code in line 7 maygenerate data indicating that the platform-specific application is beingexecuted natively, or is being executed by the particular target mobilephone computer platform. The data may be included in one or moresubsequent requests that are sent to, and processed by, an emulatorfilter. Accordingly, the emulator filter may determine that the one ormore requests are from the platform-specific application executed by theparticular target phone client-computer platform.

If third particular function determines that the returned value is aparticular value that is not associated with the particular mobile phonecomputer platform (indicating that the platform-specific application isbeing executed by a target client-computer platform or anotheremulator), then control may proceed to execute the other function inline 6. The code in line 6 uses a fourth function defined in the libraryin line 1 (“TARGET_TABLET”). When the fourth particular function isexecuted, the platform-specific application calls the API provided bythe target client-computer platform or an emulator executing theplatform-specific application. The target client-computer platform oremulator may return a value. The fourth particular function maydetermine if the returned value is a particular value associated with aparticular target mobile tablet computer platform; if so, then controlmay proceed to execute the code in line 7, which is not shown. However,the code in line 7 may generate data indicating that theplatform-specific application is being executed natively, or is beingexecuted by the particular target mobile tablet computer platform. Thedata may be included in one or more subsequent requests that are sentto, and processed by, an emulator filter. Accordingly, the emulatorfilter may determine that the one or more requests are from theplatform-specific application executed by the particular target tabletclient-computer platform.

If fourth particular function determines that the returned value is aparticular value that is not associated with the particular mobiletablet computer platform (indicating that the platform-specificapplication is being executed by a target client-computer platform oranother emulator), then control may proceed to execute the code in line9. In the example in Snippet 1, in line 9, the platform-specificapplication may pessimistically determine that the platform-specificapplication is being executed in an unknown emulator and execute codethat generates data indicating that the platform-specific application isbeing executed in an unknown emulator. In an embodiment, theplatform-specific application may optimistically determine that theplatform-specific application is being executed natively in a targetclient-computer platform and execute code that generates data indicatingthat the platform-specific application is being executed natively in atarget client-computer platform. The data may be included in one or moresubsequent requests that are sent to, and processed by, an emulatorfilter. Accordingly, the emulator filter may determine that the one ormore requests are from the platform-specific application executed by anunknown emulator.

2.2.2 Code That Checks for Hard-to-Simulate Components

As discussed herein, a computer platform is a particular set of hardwareor software components. One computer platform can include one or moredifferent processors, chipsets, peripheral components, operatingsystems, displays, inputs, or other hardware or software components thatanother computer platform does not have. A platform-specific applicationmay include fingerprinting instructions, which when executed query for,or interact with, one or more hardware or software components on atarget client-computer platform that are difficult to simulate. Forexample, one or more target computer platforms may provide specializedcomponents, such as a global positioning system (“GPS”) or camera. Aplatform-specific application may use one or moretarget-computer-platform-specific APIs to request data from a GPS orcamera on the target platform. If valid GPS data or camera data isreturned, indicating that the computer platform has those components,then the platform-specific application may determine, and generate dataindicating, that the platform-specific application is being executed bya target client-computer platform. If no valid GPS or camera data isreturned, or if data indicating that a GPS or camera is accessible, thenthe platform-specific application may determine, and generate dataindicating, that the platform-specific application is being executed inan emulator. The data may be included in one or more subsequent requeststhat are sent to, and processed by, an emulator filter.

An emulator may not provide all of the interfaces or functionalityprovided by a target computer platform. However, an emulator maysimulate one or more interfaces, features, hardware, or softwarecomponents provided by the emulated target computer platform byproviding one or more default, pre-defined, user-selected, or otherparticular values in response to an attempt by the platform-specificapplication to interface with, or query for, a hardware or softwarecomponent that is not available by the underlying computer platform. Forexample, if a target computer platform includes a GPS system, thenon-target computer platform that is executing the emulator does notinclude a GPS system, and the emulator receives a call from aplatform-specific application for GPS coordinates, then the emulator maysimulate a GPS by returning one or more default or user-selected valueseven though the one or more default or user-selected values would not bebased data gathered from a GPS. The platform-specific application maymake the call one or more additional times. If the same values arereturned each time, then the platform-specific application may generatedata indicating the same or that the platform-specific application isbeing executed by an emulator. The data may be included in one or moresubsequent requests that are sent to, and processed by, an emulatorfilter.

Simulating a GPS system or indicating that the platform does not haveaccess to the GPS system may be a valid response for theplatform-specific application and allow the platform-specificapplication to continue executing within emulator. However, in responseto receiving data that the platform-specific application does not haveaccess to a GPS or camera the emulator filter may perform a negativeaction.

2.2.3 Sending Data to an Emulator Filter

The data sent to an emulator filter from a platform-specific applicationmay be transmitted using one or more secure or encrypted protocols. Forexample, a platform-specific application may append a digital signatureto data sent to an emulator filter using secret recipe. For purposes ofillustrating a clear example, assume the following:

-   -   The platform-specific application is being executed by a target        client-computer platform;    -   The platform-specific application identifies the target        client-computer platform with the value “platform-a”.

The platform-specific application may send a request that includes aparameter names “platform” and a value that identifies the targetclient-computer platform, which in this example is “platform-a”.Accordingly, the request may include “platform: platform-a”. Theplatform-specific application may generate a digital signature based ona cryptographic hashing function and one or more features, such as theparameter name, parameter value, a time or timestamp generated by theplatform-specific application, or one or more other values. The digitalsignature can be appended to the platform identifier in a request sentto an emulator filter. If an emulator filter receives a request with aninvalid digital signature, then the emulator filter may perform anegative action. An example of an emulator filter determining whether adigital signature is valid is discussed further herein.

The data, digital signature, methods used to generate the data ordigital signature, or the hardware or software components that are usedto generate data for an emulator filter to determine whether aplatform-specific application is being executed natively or by anemulator may be changed over time based on a pre-defined schedule.Accordingly, a digital signature for a request with the same data maychange over time. The schedule may be stored in a configuration orstorage system, and may be configurable by one or more users oradministrators. The schedule may be retrieved by an emulator filter orthe platform-specific application from the storage system. Additionallyor alternatively, the schedule may be sent from the emulator filter tothe platform-specific application over one or more protected, secure, orencrypted protocols.

3.0 Example Network Topology for Determining Whether a Request is From aNative Application Executed by the Target Client Computer Platform or byan Emulator

FIG. 2 illustrates a computer system for determining whether a requestis from a platform-specific application executed by a target computerplatform or an emulator on a non-target computer platform, in an exampleembodiment. In FIG. 2, system 200 comprises client-computer platform210, client-computer platform 220, intermediary computer 230, storage240, and server infrastructure 290 communicatively coupled over aplurality of interconnected computer networks.

A “computer” may be one or more physical computers, virtual computers,or computing devices. As an example, a computer may be one or moreserver computers, cloud-based computers, cloud-based cluster ofcomputers, virtual machine instances or virtual machine computingelements such as virtual processors, storage and memory, data centers,storage devices, desktop computers, laptop computers, mobile devices, orany other special-purpose computing devices. Any reference to “acomputer” herein may mean one or more computers, unless expressly statedotherwise.

While each of the components listed above is illustrated as if runningon a separate, remote computer from each other, one or more of thecomponents listed above may be part of or executed on the same computer.For example, intermediary computer 230, storage 240, or serverinfrastructure 290 may be executed on the same computer, local area, orwide area network. Additionally or alternatively, intermediary computer230 may be a proxy server or layer for server infrastructure 290.Additionally or alternatively, intermediary computer 230 may be in linebetween a router and server infrastructure 290, such that intermediarycomputer 230 may intercept all network data sent to, or sent from,server infrastructure 290 over one or more protocols. Additionally oralternatively, intermediary computer 230, or one or more modulescomprising intermediary computer 230 discussed herein, may be a softwarelayer between, or executed on, server infrastructure 290 or a componentof server infrastructure 290. Additionally or alternatively,intermediary computer 230, or one or more modules comprisingintermediary computer 230 discussed herein, may be part of a server-sideapplication that responds to requests over one or more standard orproprietary protocols, such as HTTP or any other protocol.

3.1 Client-Computer Platforms

Client-computer platform 210 and client-computer platform 220 are twodifferent computer platforms comprising particular hardware and softwareconfigurations that are different than the other. Client computerplatform 210 comprises mobile device 212, mobile operating system(“mobile OS”) 214, and mobile application 205-1. Mobile application205-1 is a platform-specific application, and client-computer platform210 is a target platform for mobile application 205-1.

Client-computer platform 220 comprises desktop computer 222, desktopoperating system (“desktop OS”) 224, emulator 226, and mobileapplication 205-2. Mobile application 205-2 is a copy of mobileapplication 205-1. Accordingly, mobile application 205-2 is aplatform-specific application for one or more target computer platforms,but client-computer platform 220 is not a target platform for mobileapplication 205-2. Client-computer platform 220 is not configuredexecute mobile application 205-2 with mobile device 212 and desktop OS224 without emulator 226.

3.2 Server Infrastructure

Server infrastructure 290 may comprise one or more server computers thatreceive requests from one or more computers or computer platforms, suchas client-computer platform 210, client-computer platform 220, orintermediary computer 230. Server infrastructure 290 may respond bysending data to the client computer that made the request. The one ormore computers in server infrastructure 290 may, but need not, be ownedor managed by one or more independent entities and may span across oneor more computer networks.

A server computer may be a computer that receives requests for data andresponds with data. For example, a server computer may be an HTTP-basedcomputer that receives HTTP requests and responds with structured dataor instructions comprising JSON, HTML, CSS, or JavaScript instructions.A request may include data that is being submitted to a server computer.Additionally or alternatively, a request may be for a set of datastored, hosted, or served by a server computer.

3.3 Emulator

An emulator may be software or hardware on a computer platform thatemulates or simulates hardware or software components of a targetcomputer platform. However, the emulator is executed by a differentunderlying computer platform. For example, emulator 226 may be softwareexecuted by desktop OS 224 on desktop computer 222. Emulator 226 mayprovide one or more interfaces or functions provided by client-computerplatform 210 that are not provided or supported by desktop computer 222or desktop OS 224. Emulator 226 may be a specialized application, anddesktop OS 224 on desktop computer 222 may be the target platform foremulator 226.

Emulator 226 need not provide all of the interfaces or functionalityprovided by a target computer platform. Emulator 226 may provide one ormore default, pre-defined, user-selected values in response to a requestfor a hardware or software component that is not available by theunderlying computer platform. For example, if mobile device 212 includesa GPS system, desktop computer 222 does not include a GPS system, andemulator 226 receives a call from mobile application 205-2 for GPScoordinates, then emulator 226 may simulate a GPS by returning one ormore default or user-selected values even though the one or more defaultor user-selected values would not be based data gathered from a GPS.Additionally or alternatively, emulator 226 may respond to the call forGPS coordinates with data indicating that client-computer platform 220or a component therein does not have a GPS system. Simulating a GPSsystem or indicating that the platform does not have access to the GPSsystem may be a valid response for mobile application 205-2 and allowmobile application 205-2 to continue executing within emulator 226.

3.4 Emulator Filter and Intermediary Computer

Although an emulator emulates a particular target computer platform, anon-target computer platform with the emulator is not completelyequivalent to the particular target computer platform. For example,desktop computer 222, desktop OS 224, and emulator 226 do not create acomputer platform that is completely functionally equivalent toclient-computer platform 210, because emulator 226 may perform one ormore operations differently than client-computer platform 210 or may notprovide one or more operations provided by client-computer platform 210.Detecting one or more differences allows intermediary computer 230 oremulator filter logic 232 (discussed further herein) to determinewhether a request is from a platform-specific application being executedin an emulator or a platform-specific application being executed in atarget computer platform.

Intermediary computer 230 may be a computer that is logically betweenserver infrastructure 290 and one or more client-computer platforms.Intermediary computer 230 comprises emulator filter logic 232. Emulatorfilter logic 232 may be hardware or software that receives one or morerequests from one or more platform-specific applications, and filtersthe one or more requests based on whether the request is (1) from aplatform-specific application being executed on a target platform or (2)a platform-specific application that is being executed within anemulator on a non-target platform. Emulator filter logic 232 may filterrequests based on other factors discussed further herein. If a requestsatisfies emulator filter logic 232 then emulator filter logic 232 mayperform a positive action (discussed further herein); otherwise,emulator filter logic may perform a negative action (discussed furtherherein).

Intermediary computer 230 that one or more domain name servers or otherelements of the domain name system (“DNS”) identify in DNS records as adestination network address associated with one or more internet domainnames. Accordingly, intermediary computer 230 or intermediary computer230 may receive requests sent to the one or more domains client-computerplatforms. Based on using DNS to resolve the domain name in a request toa network address, intermediary computer 230 may forward the request, ora modified request, to a server computer in server infrastructure 290.

In the embodiment illustrated in FIG. 2, emulator filter logic 232 is ona separate computer from server infrastructure 290. However, emulatorfilter logic 232 may part of, but logically between, serverinfrastructure 290 and one or more client-computer platforms.

3.5 Storage and Configuration

Storage 240 may be volatile or non-volatile computer readable mediacommunicatively coupled to intermediary computer 230 or emulator filterlogic 232. In FIG. 2, storage 240 is illustrated as a separate computersystem communicatively coupled to intermediary computer 230. However, inanother embodiment, storage 240 may be persistent storage that is partof, or communicatively coupled to, intermediary computer 230 or serverinfrastructure 290.

Storage 240 comprises Configuration 242. Configuration 242 may be adatabase, a configuration file, or any other system that stores one ormore settings, preferences, policies, or protocols. Configuration 242may store more than one configuration for one or more server computersin server infrastructure 290. For example, configuration 242 may includedata that indicates requests for one or more server computers orresources provided by a server computer in server infrastructure 290may, or need not, be filtered. A resource may be hardware, software, ordata identified by the request. Additionally or alternatively,configuration 242 may include data that identifies one or more clientcomputers that are on a blacklist or one or more client computers thatare on a whitelist. Configuration 242 may be created or modified byintermediary computer 230, emulator filter logic 232, or a user oradministrator through one or more computers, such intermediary computer230, a computer in server infrastructure 290, a client computer, or oneor more other computers not illustrated in FIG. 2.

4.0 Process Overview for Enforcing Platform Policies

While some attackers may use emulators to send malicious requests to oneor more server computers, developers or other users may use an emulatorto test or perform other legitimate tasks with a platform-specificapplication. An emulator filter can implement one or more policies thatdefine how to respond to requests from a platform-specific applicationbased on whether the requests are determined to be from aplatform-specific application executed by a target client-computerplatform or an emulator, whether the emulator is trusted, whether theclient computer is a trusted client computer, or based on one or moreother factors, features, or values discussed herein. FIG. 3 illustratesa process to filter a request from a platform-specific application usinga set of rules in a policy, in an example embodiment.

4.1 Receiving One or More Requests From One or More Platform-SpecificApplications

In step 310, an intermediary computer receives, from a client computer,a request with one or more values. For purposes of illustrating a clearexample, assume the following:

-   -   Mobile application 205-1 and mobile application 205-2 are copies        of a platform-specific mobile application that is compiled or        configured to be executed on one or more target systems, which        include target client-computer platform 210, but not        client-computer platform 220.    -   Mobile application 205-2 includes and executes fingerprinting        instructions that includes platform-conditionally executed code        and code that checks for hard to simulate hardware or software        components, which in this example includes a GPS;    -   Mobile application 205-2 sends a first request, to emulator        filter logic 232, with the following path to a resource:        “/survey/2/answer/new”;    -   The first request further includes data that includes or        identifies a first answer to a survey question, the Internet        Protocol (“IP”) address of mobile application 205-2, a first        value (“F”) indicating that mobile application 205-2 is being        executed in a computer platform that does not have a GPS, a        particular emulator executing mobile application 205-2, and a        first digital signature based on the first value;    -   Mobile application 205-1 includes and executes fingerprinting        instructions that includes platform-conditionally executed code        and code that check for hard to simulate hardware or software        components, which in this example includes a GPS;    -   Mobile application 205-1 sends a second request, to emulator        filter logic 232, with the following path to a resource:        “/survey/1/answer/new”;    -   The second request further includes data that includes or        identifies a second answer to a survey question, the IP address        of mobile application 205-1, a second value (“T”) indicating        that mobile application 205-1 is being executed in a computer        platform that has a GPS, mobile application 205-1 is being        executed natively in a particular operating system, and a second        digital signature based on the second value;    -   Configuration 242 indicates a resource identified by the        following path is a protected resource for one or more        platform-specific applications: “/survey/*/answer/new”, where        the asterisk is a wildcard character;

Accordingly, emulator filter logic 232 may receive the first request andsecond request.

In step 320, the intermediary computer determines, based on the one ormore values, whether the request from a platform-specific application.For example, emulator filter logic 232 may determine that the firstrequest is from a platform-specific application because the firstrequest includes a path (“/survey/2/answer/new”) that matches a path toa resource for one or more platform-specific applications(“/survey/*/answer/new”). Similarly, emulator filter logic 232 maydetermine that the second request is from a platform-specificapplication because the second request includes a path(“/survey/1/answer/new”) that matches a path to a protected resource(“survey/*/answer/new”).

4.2 Determining Whether the Request is From a Platform-SpecificApplication Executed by an Emulator or a Target Client-Computer Platform

In step 330, the intermediary computer determines, based on the one ormore values, whether the platform-specific application is being executedwithin an emulator. For example, emulator filter logic 232 may determinethat the platform-specific application is being executed by an emulatorbased on the first request including the first value “F” indicating thatmobile application 205-2 is being executed in a computer platform thatdoes not have a GPS, and includes data that indicates that mobileapplication 205-2 is being executed in a particular emulator that isconfigured to be executed on a desktop OS.

In step 340, the intermediary computer determines, based on the one ormore values, whether the platform-specific application is being executednatively. For example, emulator filter logic 232 may determine that thesecond request is from a platform-specific application being executed bya target client-computer platform based on the second request includingthe first value “T” indicating that mobile application 205-1 is beingexecuted in a computer platform that has a GPS, and includes data thatindicates that mobile application 205-1 is being executed natively in aparticular target mobile OS. In this example, emulator filter logic 232need not determine that the first request is from a platform-specificapplication being executed by a target client-computer platform, becauseemulator filter logic 232 already determined that the first request wasfrom a platform-specific application being executed by an emulator.

4.3 Determining Whether Remote Interface is Protected

In step 350, the intermediary computer determines whether a particularremote interface, referenced in the request, is protected. For example,emulator filter logic 232 may determine that the first request for aprotected resource or interface because the first request includes apath (“/survey/2/answer/new”) that matches a path to a protectedresource (“/survey/*/answer/new”). Similarly, emulator filter logic 232may determine that the second request for a protected resource orinterface because the second request includes a path(“/survey/1/answer/new”) that matches a path to a protected resource(“/survey/*/answer/new”).

4.4 Determining Whether Value(s) Are Correctly Signed

In step 360, the intermediary computer determines whether one or moreparticular values of the one or more values are correctly signed withthe digital signature. Continuing with the previous example, emulatorfilter logic 232 may know the method(s) or schedule(s) thatplatform-specific mobile application 205-1 and platform-specific mobileapplication 205-2 use to generate digital signatures. Accordingly,emulator filter logic 232 may generate a first verification signaturebased on the value (“F”) in the first request using the same one or moremethods used by mobile application 205-2. Emulator filter logic 232 maydetermine that the first request was properly signed if the firstverification signature matches the first digital signature in the firstrequest. Similarly, emulator filter logic 232 may generate a secondverification signature based on the value (“T”) in the second requestusing the same one or more methods used by mobile application 205-1.Emulator filter logic 232 may determine that the second request wasproperly signed if the second verification signature matches the seconddigital signature in the second request.

4.5 Determining One or More Actions Based on a Policy and Results of Oneor More Determinations, and Perform the One or More Actions

In step 370, the intermediary computer selects one or more actions basedon a policy and one or more determinations or other factors discussedherein, and performs the one or more actions. A policy may be associatedwith a resource, domain, server computer, platform-specific application,or one or more features discussed herein. Table 1 illustrates a policywith rules to determine how emulator filter logic 232 responds to eachrequest, received from a platform-specific application, matches a pathto a resource, in an example embodiment. In this example, assume thepath to the resource is the same as the protected resource in thisexample (“/survey/*/answer/new”). Table 1 indicates what actionsemulator filter logic 232 may perform in response to receiving a requestbased on: whether the request that is determined to be from aplatform-specific application, the platform-specific application isexecuted by a target client-computer platform or an emulator, the IPaddress of the requesting client computer, or one or more data values orfeatures in the request, or one or more determinations derived from thedata in the request or related to the request. While Table 1 illustratesa particular embodiment for purposes of illustrating a clear example,other embodiments may omit, add to, reorder, or modify any of the rules,names, actions, factors, values, features, or other elements in Table 1.

TABLE 1 # Rule Name Match Criteria Actions 1 Trusted Source IP: anyPositive: Source Request data: value “T” in request forward Platform-Client-Computer Platform: Target Mobile request Specific OperatingSystem Application Resource: any being Digital Signature: valid executedDomain in request: any natively Client attributes in HTTP header: any 2Trusted Source IP: subnet 20.20.20.0/24 Positive: Source Request data:value “T” in request forward Developer A Client-Computer Platform: Phonerequest Simulator 1 on OS 1 Resource: any 3 Trusted Source IP: anyPositive: Source Request data: value “(A and B) or C” in forwardDeveloper B request request Client-Computer Platform: any 4 TrustedSource IP: 50.50.50.1-50.50.50.200 Positive: Source Request data: value“A or B or C” in forward Developer C request request Client-ComputerPlatform: any Resource: any 5 Trusted Source IP: any on whitelistPositive: Emulator Request data: any forward Client-Computer Platform:Tablet and log Simulator 2 on any version of a request particular OSResource: any 6 Untrusted Source IP: any Negative: Emulator Requestdata: any terminate Client-Computer Platform: any emulator request onany desktop OS Resource: /survey/*/answer/new 7 Untrusted Source IP: anyon a blacklist Negative: Emulator Request data: any terminateClient-Computer Platform: any and log Resource: any request 8 UntrustedSource IP: any Negative: Emulator Request data: any add toClient-Computer Platform: any blacklist Resource: any computer Digitalsignature: invalid and log request

Table 1 can be stored in configuration 242 and associated with a domainor one or more server computers in server infrastructure 290. Inresponse to receiving user input identifying one or more policies,rules, rule criteria, or actions, emulator filter logic 232 may update apolicy or rule, or create a new policy or rule, that includes the one ormore rules or one or more actions in configuration 242. Additionally oralternatively, in response to receiving user input identifying one ormore policies or rules, emulator filter logic 232 may delete the one ormore policies or the one or more rules in configuration 242. Emulatorfilter logic 232 can retrieve Table 1 from storage 240. In response toreceiving a request for the particular domain or the one or more servercomputers, emulator filter logic 232 may retrieve Table 1 from storage240, analyze the request to determine which rule in Table 1 matches therequest. In response to determining that the request matches one or morerules, emulator filter logic 232 may take the action(s) in each of theone or more matching rules.

Returning to FIG. 3, in step 370, the intermediary computer selects oneor more actions based on a policy and one or more determinations orother factors discussed herein, and performs the one or more actions.Continuing with the example in the previous steps and including Table 1,emulator filter logic 232 may select one or more rules from Table 1based on one or more determinations discussed herein relating to thefirst request or the computer, application, or platform that sent thefirst request, or one or more other data or features discussed herein,and the match criteria for each rule in Table 1. Emulator filter logic232 may select rule 6 and rule 7, the criteria for which are bothsatisfied by the first request. Accordingly, emulator filter logic 232may perform a negative action comprising: terminating the first requestwithout forwarding the first request to server infrastructure 290,adding an identifier of desktop computer 222 (such as an IP address,subnet, or X-Forwarded-For address associated with desktop computer 222)to a blacklist, and adding data about the request in a log. If emulatorfilter logic 232 receives a third request, and the third request is fromdesktop computer 222, then emulator filter logic 232 may match therequest with Rule 7, and in response, terminate and log the request.

In response to the second request, emulator filter logic 232 may selectone or more rules from Table 1 based on one or more determinationsdiscussed herein relating to the second request or the computer,application, or platform that sent the second request, or one or moreother data or features discussed herein, and the match criteria for eachrule in Table 1. Emulator filter logic 232 may select rule 1, which hascriteria that is satisfied by the second request. Accordingly, emulatorfilter logic 232 may perform a positive action comprising: forwardingthe request to server infrastructure 290, receiving any data from serverinfrastructure 290 in response to the forwarded request, send the datato mobile application 205-1, adding an identifier of mobile device 212to a whitelist, and adding data about the request in a log.

If emulator filter logic 232 receives a request from mobile application205-1 on mobile device 212, then emulator filter logic 232 may determinethat an identifier associated with mobile device 212 is in thewhitelist. In response to determining that the identifier associatedwith mobile device 212 is in the whitelist, emulator filter logic 232may perform one or more positive actions.

4.6 Negative Actions

A negative action may comprise one or more responses discussed herein.For example, a negative action may comprise one or more of thefollowing: terminating the request without forwarding the request to aserver computer; logging a request in storage 240; redirecting therequest to a warning page or a page with data that appears to be thedata requested, but is not the data requested; adding an identifier ofthe client computer that sent the request to a blacklist; or one or moreother responses discussed herein. Logging a request as a negative actionneed not cause the request to be terminated. Accordingly, a negativeaction may comprise logging a request, but still forwarding the requestto a server computer, and returning and results from the server computerto the client computer.

4.7 Positive Actions

A positive action may comprise one or more responses discussed herein.For example, a positive action may comprise one or more of thefollowing: forwarding the request to a server computer, receive a set ofdata in response to the request, and send the results to the clientcomputer that send the request; logging a request; adding an identifierof the client computer that sent the request to a whitelist; or one ormore responses discussed herein.

5.0 Implementation Mechanisms—Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs) or fieldprogrammable gate arrays (FPGAs) that are persistently programmed toperform the techniques, or may include one or more general purposehardware processors programmed to perform the techniques pursuant toprogram instructions in firmware, memory, other storage, or acombination. Such special-purpose computing devices may also combinecustom hard-wired logic, ASICs, or FPGAs with custom programming toaccomplish the techniques. The special-purpose computing devices may bedesktop computer systems, portable computer systems, handheld devices,networking devices or any other device that incorporates hard-wired orprogram logic to implement the techniques.

For example, FIG. 4 is a block diagram that illustrates a computersystem 500 upon which an embodiment of the invention may be implemented.Computer system 400 includes a bus 402 or other communication mechanismfor communicating information, and a hardware processor 404 coupled withbus 402 for processing information. Hardware processor 404 may be, forexample, a general purpose microprocessor.

Computer system 400 also includes a main memory 406, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 402for storing information and instructions to be executed by processor404. Main memory 406 also may be used for storing temporary variables orother intermediate information during execution of instructions to beexecuted by processor 404. Such instructions, when stored innon-transitory storage media accessible to processor 404, rendercomputer system 400 into a special-purpose machine that is customized toperform the operations specified in the instructions.

Computer system 400 further includes a read only memory (ROM) 408 orother static storage device coupled to bus 402 for storing staticinformation and instructions for processor 404. A storage device 410,such as a magnetic disk or optical disk, is provided and coupled to bus402 for storing information and instructions.

Computer system 400 may be coupled via bus 402 to a display 412, such asa cathode ray tube (CRT), for displaying information to a computer user.An input device 414, including alphanumeric and other keys, is coupledto bus 402 for communicating information and command selections toprocessor 404. Another type of user input device is cursor control 416,such as a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to processor 404 and forcontrolling cursor movement on display 412. This input device typicallyhas two degrees of freedom in two axes, a first axis (e.g., x) and asecond axis (e.g., y), that allows the device to specify positions in aplane.

Computer system 400 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware orprogram logic which in combination with the computer system causes orprograms computer system 400 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 400 in response to processor 404 executing one or more sequencesof one or more instructions contained in main memory 406. Suchinstructions may be read into main memory 406 from another storagemedium, such as storage device 410. Execution of the sequences ofinstructions contained in main memory 406 causes processor 404 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data or instructions that cause a machine to operationin a specific fashion. Such storage media may comprise non-volatilemedia or volatile media. Non-volatile media includes, for example,optical or magnetic disks, such as storage device 410. Volatile mediaincludes dynamic memory, such as main memory 406. Common forms ofstorage media include, for example, a floppy disk, a flexible disk, harddisk, solid state drive, magnetic tape, or any other magnetic datastorage medium, a CD-ROM, any other optical data storage medium, anyphysical medium with patterns of holes, a RAM, a PROM, and EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 402. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 404 for execution. For example,the instructions may initially be carried on a magnetic disk or solidstate drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 400 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 402. Bus 402 carries the data tomain memory 406, from which processor 404 retrieves and executes theinstructions. The instructions received by main memory 406 mayoptionally be stored on storage device 410 either before or afterexecution by processor 404.

Computer system 400 also includes a communication interface 418 coupledto bus 402. Communication interface 418 provides a two-way datacommunication coupling to a network link 420 that is connected to alocal network 422. For example, communication interface 418 may be anintegrated services digital network (ISDN) card, cable modem, satellitemodem, or a modem to provide a data communication connection to acorresponding type of telephone line. As another example, communicationinterface 418 may be a local area network (LAN) card to provide a datacommunication connection to a compatible LAN. Wireless links may also beimplemented. In any such implementation, communication interface 418sends and receives electrical, electromagnetic or optical signals thatcarry digital data streams representing various types of information.

Network link 420 typically provides data communication through one ormore networks to other data devices. For example, network link 420 mayprovide a connection through local network 422 to a host computer 424 orto data equipment operated by an Internet Service Provider (ISP) 426.ISP 426 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 428. Local network 422 and Internet 428 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 420and through communication interface 418, which carry the digital data toand from computer system 400, are example forms of transmission media.

Computer system 400 can send messages and receive data, includingprogram code, through the network(s), network link 420 and communicationinterface 418. In the Internet example, a server 430 might transmit arequested code for an application program through Internet 428, ISP 426,local network 422 and communication interface 418.

The received code may be executed by processor 404 as it is received, orstored in storage device 410, or other non-volatile storage for laterexecution.

6.0 Other Aspects of Disclosure

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense. The sole and exclusive indicator of the scope of the invention,and what is intended by the applicants to be the scope of the invention,is the literal and equivalent scope of the set of claims that issue fromthis application, in the specific form in which such claims issue,including any subsequent correction.

What is claimed is:
 1. A computer system for improving security of acomputing device comprising: one or more processors; one or more memorydevices coupled to the one or more processors and storing a set ofsecurity instructions which, when executed by the one or moreprocessors, cause the one or more processors to perform: receiving arequest from an application, wherein the request specifies one or morevalues associated with a computing platform on which the application isbeing executed; determining whether the one or more values includes adefault value associated with a particular hardware component of thecomputing platform; determining one or more actions to perform based onwhether the one or more values includes a default value associated witha particular hardware component of the computing platform; performingthe one or more actions.
 2. The computer system of claim 1 wherein theparticular hardware component is a global positioning system (GPS). 3.The computer system of claim 1 wherein the particular hardware componentis a communication interface.
 4. The computer system of claim 1 whereinthe particular hardware component is a camera.
 5. The computer system ofclaim 1 wherein the set of security instructions, when executed by theone or more processors, further cause the one or more processors toperform: determining whether the one or more values includes a defaultvalue associated with a particular software component of the computingplatform; wherein determining the one or more actions to perform isfurther based on whether the one or more values includes a default valueassociated with a particular software component of the computingplatform.
 6. The computer system of claim 1 wherein the set of securityinstructions, when executed by the one or more processors, further causethe one or more processors to perform: determining whether the one ormore values includes a value indicating a particular component of thecomputing platform is unavailable; wherein determining the one or moreactions to perform is further based on whether the one or more valuesincludes a value indicating the particular component of the computingplatform is unavailable.
 7. The computer system of claim 1 wherein theset of security instructions, when executed by the one or moreprocessors, further cause the one or more processors to perform:determining whether the one or more values includes an invalid value;wherein determining the one or more actions to perform is further basedon whether the one or more values includes an invalid value.
 8. Thecomputer system of claim 1 wherein the set of security instructions,when executed by the one or more processors, further cause the one ormore processors to perform: determining whether the one or more valuesincludes a value indicating a particular component of the computingplatform returned a same value multiple times; wherein determining theone or more actions to perform is further based on whether the one ormore values includes a value indicating a particular component of thecomputing platform returned a same value multiple times.
 9. The computersystem of claim 1 wherein the application includes one or morefingerprinting instructions which, when executed, generates the one ormore values and includes the one or more values in requests to thecomputer system, wherein generating the one or more values comprisesattempting to interact with one or more hardware components.
 10. Thecomputer system of claim 9 wherein generating the one or more valuesfurther comprises in response to attempting to interact with a hardwarecomponent that is not available, receiving a default value from thecomputer platform.
 11. The computer system of claim 1 wherein the set ofsecurity instructions, when executed by the one or more processors,further cause determining a negative action to perform based ondetermining that the one or more values includes a default value. 12.The computer system of claim 1 wherein the set of security instructions,when executed by the one or more processors, further cause determining apositive action to perform based on determining that the one or morevalues does not include a default value.
 13. A method for improvingsecurity of a computing device comprising: receiving a request from anapplication, wherein the request specifies one or more values associatedwith a computing platform on which the application is being executed;determining whether the one or more values includes a default valueassociated with a particular hardware component of the computingplatform; determining one or more actions to perform based on whetherthe one or more values includes a default value associated with aparticular hardware component of the computing platform; performing theone or more actions.
 14. The method of claim 13 wherein the particularhardware component is a global positioning system (GPS).
 15. The methodof claim 13 wherein the particular hardware component is a communicationinterface.
 16. The method of claim 13 wherein the particular hardwarecomponent is a camera.
 17. The method of claim 13 further comprising:determining whether the one or more values includes a default valueassociated with a particular software component of the computingplatform; wherein determining the one or more actions to perform isfurther based on whether the one or more values includes a default valueassociated with a particular software component of the computingplatform.
 18. The method of claim 13 further comprising: determiningwhether the one or more values includes a value indicating a particularcomponent of the computing platform is unavailable; wherein determiningthe one or more actions to perform is further based on whether the oneor more values includes a value indicating the particular component ofthe computing platform is unavailable.
 19. The method of claim 13further comprising: determining whether the one or more values includesan invalid value; wherein determining the one or more actions to performis further based on whether the one or more values includes an invalidvalue.
 20. The method of claim 13 further comprising: determiningwhether the one or more values includes a value indicating a particularcomponent of the computing platform returned a same value multipletimes; wherein determining the one or more actions to perform is furtherbased on whether the one or more values includes a value indicating aparticular component of the computing platform returned a same valuemultiple times.
 21. The method of claim 13 wherein the applicationincludes one or more fingerprinting instructions which, when executed,generates the one or more values and includes the one or more values inrequests to a server computer, wherein generating the one or more valuescomprises attempting to interact with one or more hardware components.22. The method of claim 21 wherein generating the one or more valuesfurther comprises in response to attempting to interact with a hardwarecomponent that is not available, receiving a default value from thecomputer platform.
 23. The method of claim 13 further comprisingdetermining a negative action to perform based on determining that theone or more values includes a default value.
 24. The method of claim 13further comprising determining a positive action to perform based ondetermining that the one or more values does not include a defaultvalue.